package com.coolw.design.pattern.behavior.state;

/**
 * StateTest
 *
 * <p>状态模式-定义
 * <pre>
 *  状态模式是一种行为设计模式，它主要用于管理一个对象在其内部状态改变时的行为变化
 * </pre>
 *
 * <p>状态模式-组件
 * <pre>
 *  1.状态上下文：负责维护当前状态，并根据状态调用不同的行为
 *  2.状态接口：定义了所有具体状态需要实现的方法
 *  3.具体状态子类:：定义了不同状态下发生的行为
 * </pre>
 *
 * <p>状态模式-优点/缺点
 * <pre>
 *  - 优点
 *      1.状态和行为的分离：将特定的状态和相关的行为封装在独立的类中，使得状态和行为分离（解耦），增强了代码的可维护性
 *      2.符合开闭原则：可以通过添加新的状态类来引入新的状态和行为，而不需要修改原来的代码。即对扩展开放，对修改关闭
 *      3.减少了if-else条件分支，使代码更加清晰
 *  - 缺点
 *      1.增加了类的数量，每一种状态都需要一个单独的类。当状态很多时，类也会随之增加，从而导致了系统的复杂性
 *      2.如果状态过多，可能导致状态类泛滥
 * </pre>
 *
 * @author coolw
 * @date 2025/4/22 14:46
 */
public class StateTest {

    public static void main(String[] args) {
        // 创建StateContext对象,初始化状态为StateA
        StateContext context = new StateContext(new ConcreteStateA());
        context.request();
        context.request();
        context.request();
    }
}
